package modelo;

import ar.uba.fi.algo3.titiritero.vista.*;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;

import vista.PanelFondo;
import vista.VistaMenu;
import static modelo.SetUps.*;

import control.EscuchadorDeKeyPress;

public class Juego {

	private Frame ventana;
	
	public Juego (){
		ventana = new Frame("1942");
		ventana.setSize(ANCHO_ESCENARIO,ALTO_ESCENARIO);
		ventana.setVisible(true);
		ventana.setResizable(false);
		ventana.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                    System.exit(0);
            }
		});
	}
	/**
	 * @param args
	 */
	
	public void iniciar (){
		//agregado de botones presentacion
		//iniciar juego
		JButton botonIniciar = new JButton ("Iniciar Juego");
		botonIniciar.setBounds(ANCHO_ESCENARIO/4,ANCHO_ESCENARIO/3,200,20);
		botonIniciar.setActionCommand("enable");
		IniciarJuego iniciar = new IniciarJuego();
		botonIniciar.addActionListener(iniciar);
		
		JButton botonCargar = new JButton ("Cargar Partida");
		botonCargar.setBounds(ANCHO_ESCENARIO/4,(ANCHO_ESCENARIO/3 + 40),200,20);
		botonCargar.setActionCommand ("enable");
		CargarJuego cargar = new CargarJuego();
		botonCargar.addActionListener(cargar);
		
		
		ventana.add(botonIniciar);
		ventana.add(botonCargar);
		
		PanelFondo panelConFondo = new PanelFondo();
		ventana.add(panelConFondo);
		
		ventana.setVisible(true);
		//demora hasta apretar comenzar
		while ( (! iniciar.getValor()) | (! cargar.getValor()) ){
			ventana.repaint();
			if (iniciar.getValor()){
				jugarNuevo();
			} else if (cargar.getValor()){
				cargar.algo (ventana, this);
			}
			try{
				Thread.sleep(200);
			}catch(Exception e ){
				//TODO: COMPLETAR
			}

		}
		
	}
	
	
	public void jugarNuevo(){
				
		Controlador1942 controlador = getNewControlador();
		
		Nivel nivel = new Nivel();
		
		nivel.setControladorVistas(controlador);
		
		jugarPartida (nivel);
		
	}
	
	public void jugarPartida (Nivel nivel){

		Controlador1942 controlador = nivel.getControlador();
		EscuchadorDeKeyPress escucha = new EscuchadorDeKeyPress(nivel.getJugador(), controlador);
		controlador.agregarKeyPressObservador(escucha);
		VistaMenu menu = new VistaMenu(ventana, nivel, controlador, this);
		nivel.setEscenarioVistaMenu(menu);
		controlador.agregarObjetoVivo(nivel);
		controlador.run();		
	}
	
	public Controlador1942 getNewControlador(){
		ventana.removeAll();
		Controlador1942 controlador = new Controlador1942(false);
		
		Panel supDeDibujo = new Panel (ANCHO_ESCENARIO,ALTO_ESCENARIO, controlador);
		ventana.add(supDeDibujo);
		
		controlador.setSuperficieDeDibujo(supDeDibujo);
		controlador.setIntervaloSimulacion(INTERVALO_SIMULACION);
		return controlador;
	}
		
	
	

}
